from PyM import *

def dim(L,K=''):
    p = characteristic(L)
    d = ifactor(cardinal(L))[p]
    if K=='': return d
    if not is_sub_domain(K,L):
        return 'dim error: subfield condition False'
    dK = ifactor(cardinal(K))[p]
    return d//dK

F2 = Zn(2)

[F4,x] = extension(F2,[1,1,1],'x')

# The polynomial Y**2 + x*Y + 1 is irred over F4 (has no roots in this field)
[F16,y] = extension(F4,[1,x,1],'y')

show(dim(F2), dim(F4), dim(F16), 
     dim(F4,F2), dim(F4,F4), 
     dim(F16,F2), dim(F16,F4),dim(F16,F16))
     
k = Zn(3); u = 1>>k
[K,a] = extension(k,[1,0,1],'a')
[L,b] = extension(K,[1,0,-1,1],'b')

show(dim(K,k), dim(L,k),dim(L,K))